package com.cashoutgaming.client.modules.application;

import com.cashoutgaming.client.common.SessionManager;
import com.google.gwt.event.shared.GwtEvent.Type;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.ContentSlot;
import com.gwtplatform.mvp.client.annotations.ProxyStandard;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.gwtplatform.mvp.client.proxy.PlaceRequest;
import com.gwtplatform.mvp.client.proxy.Proxy;
import com.gwtplatform.mvp.client.proxy.RevealContentHandler;

/**
 * This is the top-level presenter of the hierarchy. Other presenters reveal
 * themselves within this presenter. This presenter really manages the switching
 * between the various full screen apps. This presenter's view is really just an
 * empty viewport to which the admin tool and user tool are swapped in/out.
 */
public class ApplicationPresenter extends Presenter<ApplicationPresenter.MyView, ApplicationPresenter.MyProxy> {

	@ProxyStandard
	public interface MyProxy extends Proxy<ApplicationPresenter> {
	}

	public interface MyView extends View {

		// list methods here that the view should have

	}

	@ContentSlot
	public static final Type<RevealContentHandler<?>> TYPE_SetMainContent = new Type<RevealContentHandler<?>>();

	@Inject
	ApplicationPresenter(EventBus eventBus, MyView view, MyProxy proxy, PlaceManager placeManager, SessionManager sessionManager) {
		super(eventBus, view, proxy, RevealType.Root);
	}

	@Override
	public void prepareFromRequest(PlaceRequest request) {
		super.prepareFromRequest(request);
	}
}
